#pragma once
#include <wtypes.h>

struct Vector3					// expanded 3D vector struct
{
	Vector3() {}	// constructor
	Vector3(float new_x, float new_y, float new_z) // initialize constructor	 
	{
		x = new_x; y = new_y; z = new_z;
	}
	// overload + operator so that we easier can add vectors
	Vector3 operator+(Vector3 vVector) { return Vector3(vVector.x + x, vVector.y + y, vVector.z + z); }
	// overload - operator that we easier can subtract vectors
	Vector3 operator-(Vector3 vVector) { return Vector3(x - vVector.x, y - vVector.y, z - vVector.z); }
	// overload * operator that we easier can multiply by scalars
	Vector3 operator*(float number)	 { return Vector3(x*number, y*number, z*number); }
	// overload / operator that we easier can divide by a scalar
	Vector3 operator/(float number)	 { return Vector3(x / number, y / number, z / number); }


	//assignament operator
	const Vector3& operator = (const Vector3 &src)
	{
		if (this == &src)
			return *this;
		x = src.x;
		y = src.y;
		z = src.z;
		color = src.color;

		return *this;
	}

	Vector3(const Vector3& _copy) : x(_copy.x),
		y(_copy.y),
		z(_copy.z),
		color(_copy.color)
	{
	}

public:
	float x, y, z;						// 3D vector coordinates
	DWORD color;						// color (hex)
};


